package com.bitoon.basketdudes.web.jpa;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;

/* PARTIDAS DEL CATALOGO */
@Entity
@Table(name = "partidos", schema="catalogo")
@NamedQueries({
    @NamedQuery(name = "Partida.findById", query = "SELECT p FROM Partida p WHERE p.id = :id"),
    @NamedQuery(name = "Partida.findUltimos", query = "SELECT p FROM Partida p WHERE p.fAlta>:fecha and p.estado=4 order by p.fAlta desc"),
    @NamedQuery(name = "Partida.findEnJuego", query = "SELECT p FROM Partida p WHERE p.fAlta>:fecha and p.estado<4 and p.estado>0 order by p.fAlta desc ")
})
public class Partida implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @Basic(optional = false)
    @SequenceGenerator(name="partido_id_generator", sequenceName="catalogo.partidos_id_seq", allocationSize=1)
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="partido_id_generator")
    private Integer id;

    @Basic(optional = false)
    @Column(name = "partido_id")
    private int partidoId;

    @Basic(optional = false)
    @Column(name = "competicion_id")
    private int competicionId;

/*
    @Basic(optional = false)
    @Column(name = "equipo1_id")
    private int equipo1Id;

    @Basic(optional = false)
    @Column(name = "equipo2_id")
    private int equipo2Id;
*/

    @Basic(optional = false)
    @Column(name = "cuarto_juego")
    private int cuartoJuego;

    @Basic(optional = false)
    @Column(name = "puntos_equipo1")
    private int puntosEquipo1;

    @Basic(optional = false)
    @Column(name = "puntos_equipo2")
    private int puntosEquipo2;

    @Basic(optional = false)
    @Column(name = "rankeable")
    private int tipo;
    @Basic(optional = false)
    @Column(name = "tiempo")
    private int tiempo;
    @Basic(optional = false)
    @Column(name = "estado")
    private int estado;

    @Basic(optional = false)
    @Column(name = "t11")
    private int t11;
    @Basic(optional = false)
    @Column(name = "t12")
    private int t12;
    @Basic(optional = false)
    @Column(name = "t13")
    private int t13;
    @Basic(optional = false)
    @Column(name = "t14")
    private int t14;
    @Basic(optional = false)
    @Column(name = "t21")
    private int t21;
    @Basic(optional = false)
    @Column(name = "t22")
    private int t22;
    @Basic(optional = false)
    @Column(name = "t23")
    private int t23;
    @Basic(optional = false)
    @Column(name = "t24")
    private int t24;

    @Column(name = "f_alta")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fAlta;

    @Basic(optional = true)
    @Column(name = "ip")
    private String ip;

    @Basic(optional = true)
    @Column(name = "puerto")
    private int puerto;

    @Basic(optional = true)
    @Column(name = "abandonador")
    private int abandonador;

    @ManyToOne
    @JoinColumn(name = "equipo1_id", referencedColumnName = "id" )
    private Equipo equipo1;

    @ManyToOne
    @JoinColumn(name = "equipo2_id", referencedColumnName = "id")
    private Equipo equipo2;

    public Partida() {
    }

    public Partida(Integer id) {
        this.id = id;
    }

    public Partida(Integer id, int partidoId, int competicionId, int equipo1Id, int equipo2Id, int cuartoJuego, int puntosEquipo1, int puntosEquipo2, int tipo, int tiempo, int estado) {
        this.id = id;
        this.partidoId = partidoId;
        this.competicionId = competicionId;
//        this.equipo1Id = equipo1Id;
//        this.equipo2Id = equipo2Id;
        this.cuartoJuego = cuartoJuego;
        this.puntosEquipo1 = puntosEquipo1;
        this.puntosEquipo2 = puntosEquipo2;
        this.tipo = tipo;
        this.tiempo = tiempo;
        this.estado = estado;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public int getPartidoId() {
        return partidoId;
    }

    public void setPartidoId(int partidaId) {
        this.partidoId = partidaId;
    }

    public int getCompeticionId() {
        return competicionId;
    }

    public void setCompeticionId(int competicionId) {
        this.competicionId = competicionId;
    }

    public int getEquipo1Id() {
        return equipo1.getId();
    }

    public int getEquipo2Id() {
        return equipo2.getId();
    }

/*
    public Equipo getEquipo1() {
        return equipo1;
    }

    public void setEquipo1(Equipo valor ) {
        equipo1=valor;
    }

    public Equipo getEquipo2() {
        return equipo2;
    }

    public void setEquipo2(Equipo valor ) {
        this.equipo2=valor;
    }
*/
    public int getCuartoJuego() {
        return cuartoJuego;
    }

    public void setCuartoJuego(int cuartoJuego) {
        this.cuartoJuego = cuartoJuego;
    }

    public int getPuntosEquipo1() {
        return puntosEquipo1;
    }

    public void setPuntosEquipo1(int puntosEquipo1) {
        this.puntosEquipo1 = puntosEquipo1;
    }

    public int getPuntosEquipo2() {
        return puntosEquipo2;
    }

    public void setPuntosEquipo2(int puntosEquipo2) {
        this.puntosEquipo2 = puntosEquipo2;
    }

    public int getTipo() {
        return tipo;
    }

    public void setTipo(int tipo) {
        this.tipo = tipo;
    }

    public int getTiempo() {
        return tiempo;
    }

    public void setTiempo(int tiempo) {
        this.tiempo = tiempo;
    }

    public int getEstado() {
        return estado;
    }

    public void setEstado(int estado) {
        this.estado = estado;
    }

    public int  getT11()      { return t11;   }
    public void setT11(int t) { this.t11 = t; }
    public int  getT12()      { return t12;   }
    public void setT12(int t) { this.t12 = t; }
    public int  getT13()      { return t13;   }
    public void setT13(int t) { this.t13 = t; }
    public int  getT14()      { return t14;   }
    public void setT14(int t) { this.t14 = t; }
    public int  getT21()      { return t21;   }
    public void setT21(int t) { this.t21 = t; }
    public int  getT22()      { return t22;   }
    public void setT22(int t) { this.t22 = t; }
    public int  getT23()      { return t23;   }
    public void setT23(int t) { this.t23 = t; }
    public int  getT24()      { return t24;   }
    public void setT24(int t) { this.t24 = t; }

    public Date getfAlta() {
        return fAlta;
    }

    public void setfAlta(Date fAlta) {
        this.fAlta = fAlta;
    }

    public Equipo getEquipo1() {
        return equipo1;
    }

    public void setEquipo1(Equipo equipo) {
        this.equipo1 = equipo;
    }

    public Equipo getEquipo2() {
        return equipo2;
    }

    public void setEquipo2(Equipo equipo) {
        this.equipo2 = equipo;
    }

    public int getPuerto() {
        return puerto;
    }

    public void setPuerto(int valor) {
        this.puerto = valor;
    }

    public int getAbandonador() {
        return abandonador;
    }

    public void setAbandonador(int valor) {
        this.abandonador = valor;
    }
    public String getIp() {
        return ip;
    }

    public void setIp(String valor) {
        this.ip = valor;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Partida)) {
            return false;
        }
        Partida other = (Partida) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.bitoon.basketdudes.jpa.Partida[id=" + id + "]";
    }

}
